#pragma once

#include<xnamath.h>

/**
PaleGem's proprietary material representation.
*/
class IMaterial
{
public:

	virtual ~IMaterial() {}

	/** 
	Get the diffuse color of this material.
	@returns Vector containing RGB channels
	*/
	virtual XMFLOAT3 GetDiffuse() = 0;

	/**
	Set the diffuse color of this material.
	@param vDiffuse Vector containing RGB channels
	*/
	virtual void SetDiffuse(XMFLOAT3 vDiffuse) = 0;

	virtual unsigned int GetPixelShaderIndex() = 0;
	virtual unsigned int GetVertexShaderIndex() = 0;

	virtual void SetPixelShaderIndex(unsigned int idx) = 0;
	virtual void SetVertexShaderIndex(unsigned int idx) = 0;
};